home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / tiffio.h < prev    next >
Encoding:
C/C++ Source or Header  |  2005-10-20  |  18.7 KB  |  503 lines

  1. /* $Id: tiffio.h,v 1.43 2005/04/13 14:06:21 dron Exp $ */
  2.  
  3. /*
  4.  * Copyright (c) 1988-1997 Sam Leffler
  5.  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  6.  *
  7.  * Permission to use, copy, modify, distribute, and sell this software and 
  8.  * its documentation for any purpose is hereby granted without fee, provided
  9.  * that (i) the above copyright notices and this permission notice appear in
  10.  * all copies of the software and related documentation, and (ii) the names of
  11.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  12.  * publicity relating to the software without the specific, prior written
  13.  * permission of Sam Leffler and Silicon Graphics.
  14.  * 
  15.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  16.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  17.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  18.  * 
  19.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24.  * OF THIS SOFTWARE.
  25.  */
  26.  
  27. #ifndef _TIFFIO_
  28. #define    _TIFFIO_
  29.  
  30. /*
  31.  * TIFF I/O Library Definitions.
  32.  */
  33. #include "tiff.h"
  34. #include "tiffvers.h"
  35.  
  36. /*
  37.  * TIFF is defined as an incomplete type to hide the
  38.  * library's internal data structures from clients.
  39.  */
  40. typedef    struct tiff TIFF;
  41.  
  42. /*
  43.  * The following typedefs define the intrinsic size of
  44.  * data types used in the *exported* interfaces.  These
  45.  * definitions depend on the proper definition of types
  46.  * in tiff.h.  Note also that the varargs interface used
  47.  * to pass tag types and values uses the types defined in
  48.  * tiff.h directly.
  49.  *
  50.  * NB: ttag_t is unsigned int and not unsigned short because
  51.  *     ANSI C requires that the type before the ellipsis be a
  52.  *     promoted type (i.e. one of int, unsigned int, pointer,
  53.  *     or double) and because we defined pseudo-tags that are
  54.  *     outside the range of legal Aldus-assigned tags.
  55.  * NB: tsize_t is int32 and not uint32 because some functions
  56.  *     return -1.
  57.  * NB: toff_t is not off_t for many reasons; TIFFs max out at
  58.  *     32-bit file offsets being the most important, and to ensure
  59.  *     that it is unsigned, rather than signed.
  60.  */
  61. typedef    uint32 ttag_t;        /* directory tag */
  62. typedef    uint16 tdir_t;        /* directory index */
  63. typedef    uint16 tsample_t;    /* sample number */
  64. typedef    uint32 tstrip_t;    /* strip number */
  65. typedef uint32 ttile_t;        /* tile number */
  66. typedef    int32 tsize_t;        /* i/o size in bytes */
  67. typedef    void* tdata_t;        /* image data ref */
  68. typedef    uint32 toff_t;        /* file offset */
  69.  
  70. #if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32))
  71. #define __WIN32__
  72. #endif
  73.  
  74. /*
  75.  * On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c
  76.  * or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c).
  77.  *
  78.  * By default tif_win32.c is assumed on windows if not using the cygwin
  79.  * environment.
  80.  */
  81.  
  82. #if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows)
  83. #  if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILIO)
  84. #    define USE_WIN32_FILEIO
  85. #  endif
  86. #endif
  87.  
  88. #if defined(USE_WIN32_FILEIO)
  89. # include <windows.h>
  90. # ifdef __WIN32__
  91. DECLARE_HANDLE(thandle_t);    /* Win32 file handle */
  92. # else
  93. typedef    HFILE thandle_t;    /* client data handle */
  94. # endif /* __WIN32__ */
  95. #else
  96. typedef    void* thandle_t;    /* client data handle */
  97. #endif /* USE_WIN32_FILEIO */
  98.  
  99. #ifndef NULL
  100. # define NULL    (void *)0
  101. #endif
  102.  
  103. /*
  104.  * Flags to pass to TIFFPrintDirectory to control
  105.  * printing of data structures that are potentially
  106.  * very large.   Bit-or these flags to enable printing
  107.  * multiple items.
  108.  */
  109. #define    TIFFPRINT_NONE        0x0        /* no extra info */
  110. #define    TIFFPRINT_STRIPS    0x1        /* strips/tiles info */
  111. #define    TIFFPRINT_CURVES    0x2        /* color/gray response curves */
  112. #define    TIFFPRINT_COLORMAP    0x4        /* colormap */
  113. #define    TIFFPRINT_JPEGQTABLES    0x100        /* JPEG Q matrices */
  114. #define    TIFFPRINT_JPEGACTABLES    0x200        /* JPEG AC tables */
  115. #define    TIFFPRINT_JPEGDCTABLES    0x200        /* JPEG DC tables */
  116.  
  117. /* 
  118.  * Colour conversion stuff
  119.  */
  120.  
  121. /* reference white */
  122. #define D65_X0 (95.0470F)
  123. #define D65_Y0 (100.0F)
  124. #define D65_Z0 (108.8827F)
  125.  
  126. #define D50_X0 (96.4250F)
  127. #define D50_Y0 (100.0F)
  128. #define D50_Z0 (82.4680F)
  129.  
  130. /* Structure for holding information about a display device. */
  131.  
  132. typedef    unsigned char TIFFRGBValue;        /* 8-bit samples */
  133.  
  134. typedef struct {
  135.     float d_mat[3][3];         /* XYZ -> luminance matrix */
  136.     float d_YCR;            /* Light o/p for reference white */
  137.     float d_YCG;
  138.     float d_YCB;
  139.     uint32 d_Vrwr;            /* Pixel values for ref. white */
  140.     uint32 d_Vrwg;
  141.     uint32 d_Vrwb;
  142.     float d_Y0R;            /* Residual light for black pixel */
  143.     float d_Y0G;
  144.     float d_Y0B;
  145.     float d_gammaR;            /* Gamma values for the three guns */
  146.     float d_gammaG;
  147.     float d_gammaB;
  148. } TIFFDisplay;
  149.  
  150. typedef struct {                /* YCbCr->RGB support */
  151.     TIFFRGBValue* clamptab;            /* range clamping table */
  152.     int*    Cr_r_tab;
  153.     int*    Cb_b_tab;
  154.     int32*    Cr_g_tab;
  155.     int32*    Cb_g_tab;
  156.         int32*  Y_tab;
  157. } TIFFYCbCrToRGB;
  158.  
  159. typedef struct {                /* CIE Lab 1976->RGB support */
  160.     int    range;                /* Size of conversion table */
  161. #define CIELABTORGB_TABLE_RANGE 1500
  162.     float    rstep, gstep, bstep;
  163.     float    X0, Y0, Z0;            /* Reference white point */
  164.     TIFFDisplay display;
  165.     float    Yr2r[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yr to r */
  166.     float    Yg2g[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yg to g */
  167.     float    Yb2b[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yb to b */
  168. } TIFFCIELabToRGB;
  169.  
  170. /*
  171.  * RGBA-style image support.
  172.  */
  173. typedef struct _TIFFRGBAImage TIFFRGBAImage;
  174. /*
  175.  * The image reading and conversion routines invoke
  176.  * ``put routines'' to copy/image/whatever tiles of
  177.  * raw image data.  A default set of routines are 
  178.  * provided to convert/copy raw image data to 8-bit
  179.  * packed ABGR format rasters.  Applications can supply
  180.  * alternate routines that unpack the data into a
  181.  * different format or, for example, unpack the data
  182.  * and draw the unpacked raster on the display.
  183.  */
  184. typedef void (*tileContigRoutine)
  185.     (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
  186.     unsigned char*);
  187. typedef void (*tileSeparateRoutine)
  188.     (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
  189.     unsigned char*, unsigned char*, unsigned char*, unsigned char*);
  190. /*
  191.  * RGBA-reader state.
  192.  */
  193. struct _TIFFRGBAImage {
  194.     TIFF*    tif;                /* image handle */
  195.     int    stoponerr;            /* stop on read error */
  196.     int    isContig;            /* data is packed/separate */
  197.     int    alpha;                /* type of alpha data present */
  198.     uint32    width;                /* image width */
  199.     uint32    height;                /* image height */
  200.     uint16    bitspersample;            /* image bits/sample */
  201.     uint16    samplesperpixel;        /* image samples/pixel */
  202.     uint16    orientation;            /* image orientation */
  203.     uint16    req_orientation;        /* requested orientation */
  204.     uint16    photometric;            /* image photometric interp */
  205.     uint16*    redcmap;            /* colormap pallete */
  206.     uint16*    greencmap;
  207.     uint16*    bluecmap;
  208.                         /* get image data routine */
  209.     int    (*get)(TIFFRGBAImage*, uint32*, uint32, uint32);
  210.     union {
  211.         void (*any)(TIFFRGBAImage*);
  212.         tileContigRoutine    contig;
  213.         tileSeparateRoutine    separate;
  214.     } put;                    /* put decoded strip/tile */
  215.     TIFFRGBValue* Map;            /* sample mapping array */
  216.     uint32** BWmap;                /* black&white map */
  217.     uint32** PALmap;            /* palette image map */
  218.     TIFFYCbCrToRGB* ycbcr;            /* YCbCr conversion state */
  219.         TIFFCIELabToRGB* cielab;        /* CIE L*a*b conversion state */
  220.  
  221.         int    row_offset;
  222.         int     col_offset;
  223. };
  224.  
  225. /*
  226.  * Macros for extracting components from the
  227.  * packed ABGR form returned by TIFFReadRGBAImage.
  228.  */
  229. #define    TIFFGetR(abgr)    ((abgr) & 0xff)
  230. #define    TIFFGetG(abgr)    (((abgr) >> 8) & 0xff)
  231. #define    TIFFGetB(abgr)    (((abgr) >> 16) & 0xff)
  232. #define    TIFFGetA(abgr)    (((abgr) >> 24) & 0xff)
  233.  
  234. /*
  235.  * A CODEC is a software package that implements decoding,
  236.  * encoding, or decoding+encoding of a compression algorithm.
  237.  * The library provides a collection of builtin codecs.
  238.  * More codecs may be registered through calls to the library
  239.  * and/or the builtin implementations may be overridden.
  240.  */
  241. typedef    int (*TIFFInitMethod)(TIFF*, int);
  242. typedef struct {
  243.     char*        name;
  244.     uint16        scheme;
  245.     TIFFInitMethod    init;
  246. } TIFFCodec;
  247.  
  248. #include <stdio.h>
  249. #include <stdarg.h>
  250.  
  251. /* share internal LogLuv conversion routines? */
  252. #ifndef LOGLUV_PUBLIC
  253. #define LOGLUV_PUBLIC        1    
  254. #endif
  255.  
  256. #if defined(c_plusplus) || defined(__cplusplus)
  257. extern "C" {
  258. #endif
  259. typedef    void (*TIFFErrorHandler)(const char*, const char*, va_list);
  260. typedef    tsize_t (*TIFFReadWriteProc)(thandle_t, tdata_t, tsize_t);
  261. typedef    toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);
  262. typedef    int (*TIFFCloseProc)(thandle_t);
  263. typedef    toff_t (*TIFFSizeProc)(thandle_t);
  264. typedef    int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*);
  265. typedef    void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);
  266. typedef    void (*TIFFExtendProc)(TIFF*); 
  267.  
  268. extern    const char* TIFFGetVersion(void);
  269.  
  270. extern    const TIFFCodec* TIFFFindCODEC(uint16);
  271. extern    TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod);
  272. extern    void TIFFUnRegisterCODEC(TIFFCodec*);
  273. extern  int TIFFIsCODECConfigured(uint16);
  274. extern    TIFFCodec* TIFFGetConfiguredCODECs();
  275.  
  276. extern    tdata_t _TIFFmalloc(tsize_t);
  277. extern    tdata_t _TIFFrealloc(tdata_t, tsize_t);
  278. extern    void _TIFFmemset(tdata_t, int, tsize_t);
  279. extern    void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t);
  280. extern    int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t);
  281. extern    void _TIFFfree(tdata_t);
  282.  
  283. extern    void TIFFCleanup(TIFF*);
  284. extern    void TIFFClose(TIFF*);
  285. extern    int TIFFFlush(TIFF*);
  286. extern    int TIFFFlushData(TIFF*);
  287. extern    int TIFFGetField(TIFF*, ttag_t, ...);
  288. extern    int TIFFVGetField(TIFF*, ttag_t, va_list);
  289. extern    int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...);
  290. extern    int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list);
  291. extern    int TIFFReadDirectory(TIFF*);
  292. extern    tsize_t TIFFScanlineSize(TIFF*);
  293. extern    tsize_t TIFFRasterScanlineSize(TIFF*);
  294. extern    tsize_t TIFFStripSize(TIFF*);
  295. extern    tsize_t TIFFRawStripSize(TIFF*, tstrip_t);
  296. extern    tsize_t TIFFVStripSize(TIFF*, uint32);
  297. extern    tsize_t TIFFTileRowSize(TIFF*);
  298. extern    tsize_t TIFFTileSize(TIFF*);
  299. extern    tsize_t TIFFVTileSize(TIFF*, uint32);
  300. extern    uint32 TIFFDefaultStripSize(TIFF*, uint32);
  301. extern    void TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
  302. extern    int TIFFFileno(TIFF*);
  303. extern  int TIFFSetFileno(TIFF*, int);
  304. extern  thandle_t TIFFClientdata(TIFF*);
  305. extern  thandle_t TIFFSetClientdata(TIFF*, thandle_t);
  306. extern    int TIFFGetMode(TIFF*);
  307. extern    int TIFFSetMode(TIFF*, int);
  308. extern    int TIFFIsTiled(TIFF*);
  309. extern    int TIFFIsByteSwapped(TIFF*);
  310. extern    int TIFFIsUpSampled(TIFF*);
  311. extern    int TIFFIsMSB2LSB(TIFF*);
  312. extern    int TIFFIsBigEndian(TIFF*);
  313. extern    TIFFReadWriteProc TIFFGetReadProc(TIFF*);
  314. extern    TIFFReadWriteProc TIFFGetWriteProc(TIFF*);
  315. extern    TIFFSeekProc TIFFGetSeekProc(TIFF*);
  316. extern    TIFFCloseProc TIFFGetCloseProc(TIFF*);
  317. extern    TIFFSizeProc TIFFGetSizeProc(TIFF*);
  318. extern    TIFFMapFileProc TIFFGetMapFileProc(TIFF*);
  319. extern    TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*);
  320. extern    uint32 TIFFCurrentRow(TIFF*);
  321. extern    tdir_t TIFFCurrentDirectory(TIFF*);
  322. extern    tdir_t TIFFNumberOfDirectories(TIFF*);
  323. extern    uint32 TIFFCurrentDirOffset(TIFF*);
  324. extern    tstrip_t TIFFCurrentStrip(TIFF*);
  325. extern    ttile_t TIFFCurrentTile(TIFF*);
  326. extern    int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t);
  327. extern    int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t);
  328. extern    int TIFFSetupStrips(TIFF *);
  329. extern  int TIFFWriteCheck(TIFF*, int, const char *);
  330. extern  int TIFFCreateDirectory(TIFF*);
  331. extern    int TIFFLastDirectory(TIFF*);
  332. extern    int TIFFSetDirectory(TIFF*, tdir_t);
  333. extern    int TIFFSetSubDirectory(TIFF*, uint32);
  334. extern    int TIFFUnlinkDirectory(TIFF*, tdir_t);
  335. extern    int TIFFSetField(TIFF*, ttag_t, ...);
  336. extern    int TIFFVSetField(TIFF*, ttag_t, va_list);
  337. extern    int TIFFWriteDirectory(TIFF *);
  338. extern    int TIFFCheckpointDirectory(TIFF *);
  339. extern    int TIFFRewriteDirectory(TIFF *);
  340. extern    int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int);
  341.  
  342. #if defined(c_plusplus) || defined(__cplusplus)
  343. extern    void TIFFPrintDirectory(TIFF*, FILE*, long = 0);
  344. extern    int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
  345. extern    int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
  346. extern    int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0);
  347. extern    int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*,
  348.                       int = ORIENTATION_BOTLEFT, int = 0);
  349. #else
  350. extern    void TIFFPrintDirectory(TIFF*, FILE*, long);
  351. extern    int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t);
  352. extern    int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t);
  353. extern    int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int);
  354. extern    int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int);
  355. #endif
  356.  
  357. extern    int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * );
  358. extern    int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * );
  359. extern    int TIFFRGBAImageOK(TIFF*, char [1024]);
  360. extern    int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]);
  361. extern    int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32);
  362. extern    void TIFFRGBAImageEnd(TIFFRGBAImage*);
  363. extern    TIFF* TIFFOpen(const char*, const char*);
  364. # ifdef __WIN32__
  365. extern    TIFF* TIFFOpenW(const wchar_t*, const char*);
  366. # endif /* __WIN32__ */
  367. extern    TIFF* TIFFFdOpen(int, const char*, const char*);
  368. extern    TIFF* TIFFClientOpen(const char*, const char*,
  369.         thandle_t,
  370.         TIFFReadWriteProc, TIFFReadWriteProc,
  371.         TIFFSeekProc, TIFFCloseProc,
  372.         TIFFSizeProc,
  373.         TIFFMapFileProc, TIFFUnmapFileProc);
  374. extern    const char* TIFFFileName(TIFF*);
  375. extern const char* TIFFSetFileName(TIFF*, const char *);
  376. extern    void TIFFError(const char*, const char*, ...);
  377. extern    void TIFFWarning(const char*, const char*, ...);
  378. extern    TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler);
  379. extern    TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler);
  380. extern    TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc);
  381. extern    ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t);
  382. extern    int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t);
  383. extern    ttile_t TIFFNumberOfTiles(TIFF*);
  384. extern    tsize_t TIFFReadTile(TIFF*,
  385.         tdata_t, uint32, uint32, uint32, tsample_t);
  386. extern    tsize_t TIFFWriteTile(TIFF*,
  387.         tdata_t, uint32, uint32, uint32, tsample_t);
  388. extern    tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t);
  389. extern    tstrip_t TIFFNumberOfStrips(TIFF*);
  390. extern    tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
  391. extern    tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
  392. extern    tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
  393. extern    tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
  394. extern    tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
  395. extern    tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
  396. extern    tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
  397. extern    tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
  398. extern    int TIFFDataWidth(TIFFDataType);    /* table of tag datatype widths */
  399. extern    void TIFFSetWriteOffset(TIFF*, toff_t);
  400. extern    void TIFFSwabShort(uint16*);
  401. extern    void TIFFSwabLong(uint32*);
  402. extern    void TIFFSwabDouble(double*);
  403. extern    void TIFFSwabArrayOfShort(uint16*, unsigned long);
  404. extern    void TIFFSwabArrayOfTriples(uint8*, unsigned long);
  405. extern    void TIFFSwabArrayOfLong(uint32*, unsigned long);
  406. extern    void TIFFSwabArrayOfDouble(double*, unsigned long);
  407. extern    void TIFFReverseBits(unsigned char *, unsigned long);
  408. extern    const unsigned char* TIFFGetBitRevTable(int);
  409.  
  410. #ifdef LOGLUV_PUBLIC
  411. #define U_NEU        0.210526316
  412. #define V_NEU        0.473684211
  413. #define UVSCALE        410.
  414. extern    double LogL16toY(int);
  415. extern    double LogL10toY(int);
  416. extern    void XYZtoRGB24(float*, uint8*);
  417. extern    int uv_decode(double*, double*, int);
  418. extern    void LogLuv24toXYZ(uint32, float*);
  419. extern    void LogLuv32toXYZ(uint32, float*);
  420. #if defined(c_plusplus) || defined(__cplusplus)
  421. extern    int LogL16fromY(double, int = SGILOGENCODE_NODITHER);
  422. extern    int LogL10fromY(double, int = SGILOGENCODE_NODITHER);
  423. extern    int uv_encode(double, double, int = SGILOGENCODE_NODITHER);
  424. extern    uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER);
  425. extern    uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER);
  426. #else
  427. extern    int LogL16fromY(double, int);
  428. extern    int LogL10fromY(double, int);
  429. extern    int uv_encode(double, double, int);
  430. extern    uint32 LogLuv24fromXYZ(float*, int);
  431. extern    uint32 LogLuv32fromXYZ(float*, int);
  432. #endif
  433. #endif /* LOGLUV_PUBLIC */
  434.  
  435. /*
  436. ** Stuff, related to tag handling and creating custom tags.
  437. */
  438. extern  int  TIFFGetTagListCount( TIFF * );
  439. extern  ttag_t TIFFGetTagListEntry( TIFF *, int tag_index );
  440.     
  441. #define    TIFF_ANY    TIFF_NOTYPE    /* for field descriptor searching */
  442. #define    TIFF_VARIABLE    -1        /* marker for variable length tags */
  443. #define    TIFF_SPP    -2        /* marker for SamplesPerPixel tags */
  444. #define    TIFF_VARIABLE2    -3        /* marker for uint32 var-length tags */
  445.  
  446. #define FIELD_CUSTOM    65    
  447.  
  448. typedef    struct {
  449.     ttag_t    field_tag;        /* field's tag */
  450.     short    field_readcount;    /* read count/TIFF_VARIABLE/TIFF_SPP */
  451.     short    field_writecount;    /* write count/TIFF_VARIABLE */
  452.     TIFFDataType field_type;    /* type of associated data */
  453.         unsigned short field_bit;    /* bit in fieldsset bit vector */
  454.     unsigned char field_oktochange;    /* if true, can change while writing */
  455.     unsigned char field_passcount;    /* if true, pass dir count on set */
  456.     char    *field_name;        /* ASCII name */
  457. } TIFFFieldInfo;
  458.  
  459. typedef struct _TIFFTagValue {
  460.     const TIFFFieldInfo  *info;
  461.     int             count;
  462.     void           *value;
  463. } TIFFTagValue;
  464.  
  465. extern    void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int);
  466. extern    const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType);
  467. extern  const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *,
  468.                              TIFFDataType);
  469. extern    const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t);
  470. extern    const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *);
  471.  
  472. typedef    int (*TIFFVSetMethod)(TIFF*, ttag_t, va_list);
  473. typedef    int (*TIFFVGetMethod)(TIFF*, ttag_t, va_list);
  474. typedef    void (*TIFFPrintMethod)(TIFF*, FILE*, long);
  475.     
  476. typedef struct {
  477.     TIFFVSetMethod    vsetfield;    /* tag set routine */
  478.     TIFFVGetMethod    vgetfield;    /* tag get routine */
  479.     TIFFPrintMethod    printdir;    /* directory print routine */
  480. } TIFFTagMethods;
  481.         
  482. extern  TIFFTagMethods *TIFFAccessTagMethods( TIFF * );
  483. extern  void *TIFFGetClientInfo( TIFF *, const char * );
  484. extern  void TIFFSetClientInfo( TIFF *, void *, const char * );
  485.     
  486. extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*);
  487. extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32,
  488.                 float *, float *, float *);
  489. extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float,
  490.              uint32 *, uint32 *, uint32 *);
  491.  
  492. extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*);
  493. extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32,
  494.                uint32 *, uint32 *, uint32 *);
  495.  
  496. #if defined(c_plusplus) || defined(__cplusplus)
  497. }
  498. #endif
  499.  
  500. #endif /* _TIFFIO_ */
  501.  
  502. /* vim: set ts=8 sts=8 sw=8 noet: */
  503.